

package com.hazelcast.vector;

import com.hazelcast.spi.annotation.Beta;
import com.hazelcast.vector.impl.VectorDocumentImpl;

import javax.annotation.Nonnull;

/**
 * A {@code VectorDocument} includes a user-supplied {@code V value} and the associated {@link VectorValues}
 * that represent the document.
 *
 * @param <V>
 * @since 5.5
 */
@Beta
public interface VectorDocument<V> {

    static <T> VectorDocument<T> of(@Nonnull T value, @Nonnull VectorValues vv) {
        return new VectorDocumentImpl<>(value, vv);
    }

    @Nonnull
    V getValue();

    @Nonnull
    VectorValues getVectors();
}
